<?php

/**
 * Cita filter form.
 *
 * @package    toyomotor
 * @subpackage filter
 * @author     Ing. Roberto Hernández De La Luz
 * @version    SVN: $Id: sfDoctrineFormFilterTemplate.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class CitaFormFilter extends BaseCitaFormFilter
{
  public function configure()
  {
      
      /*Modificacion de las opciones para recibir informacion*/
     /* $opciones = array('' => '--',1 => 'Si', 0 => 'No');
      $this->widgetSchema['is_aceptado']= new sfWidgetFormChoice(array('choices' => $opciones ));
      
      $this->widgetSchema['is_pending']= new sfWidgetFormChoice(array('choices' => $opciones ));
      
      $this->widgetSchema['encuesta']= new sfWidgetFormChoice(array('choices' => $opciones ));*/
      
      $format = '%day% %month% %year%';

      $this->widgetSchema['fecha_entrega'] = new sfWidgetFormFilterDate(array('from_date' => new sfWidgetFormDate(array('format' => $format)), 'to_date' => new sfWidgetFormDate(array('format' => $format)), 'template'=>'desde %from_date% <br/><br/>hasta %to_date%', 'with_empty'=>0));
      
      $this->widgetSchema['fecha'] = new sfWidgetFormFilterDate(array('from_date' => new sfWidgetFormDate(array('format' => $format)), 'to_date' => new sfWidgetFormDate(array('format' => $format)), 'template'=>'desde %from_date% <br/><br/>hasta %to_date%', 'with_empty'=>0));
      
      $this->widgetSchema['hora'] =  new sfWidgetFormChoice(array('choices'  => Doctrine_Core::getTable('Cita')->getHorass(),'expanded' => false,));
      $this->validatorSchema['hora'] = new sfValidatorPass();
      
      
      $vendedores = Doctrine_Core::getTable('Usuario')
      ->createQuery('u')
      ->select('*')
      ->where('u.perfil = "2"')
      ->execute();
      
      $vendedoresf[''] = '';
      foreach($vendedores as $vendedor):
          $vendedoresf[$vendedor->getIdUsuario()] = $vendedor->getNombre().' '.$vendedor->getApellido(); 
      endforeach;
      /*Se agrega el filtro para el campo virtual de vendedor*/
      
      
      $this->widgetSchema['id_vendedor']= new sfWidgetFormChoice(array('choices' => $vendedoresf, 'label' => 'Vendedor' ));
      $this->validatorSchema['id_vendedor'] = new sfValidatorChoice(array('choices' => array_keys($vendedoresf), 'required' => false));
      //$this->validatorSchema['id_vendedor'] = new sfValidatorPass();
      
      $this->widgetSchema['nombrec'] = new sfWidgetFormInput(array('label' => 'Nombre de Cliente'));
      $this->validatorSchema['nombrec'] = new sfValidatorPass(array ('required' => false));
      
      $this->widgetSchema['apellidoc'] = new sfWidgetFormInput(array('label' => 'Apellido del Cliente'));
      $this->validatorSchema['apellidoc'] = new sfValidatorPass(array ('required' => false));
      
      /*Codigo agregado para el filtro personalizado para los estados-banderas */
      
      $banderas = array('' => 'Escoger una Opcion' , '1' => 'Sin Asesor', '2' => 'Sin confirmacion', '3' => 'Sin Encuesta', '4' => 'Completa');
      
      $this->widgetSchema['estado'] = new sfWidgetFormChoice(array('choices' => $banderas ));
      $this->validatorSchema['estado'] = new sfValidatorPass();
      
      
  }
  
      /*
       * Autor: Ing. Roberto Hernández De La Luz
       * Codigo agregado para manejar el filtro personalizado para la hora
       */

      public function getFields()
    {
      $fields = parent::getFields();
      $fields['hora'] = 'hora';
      $fields['nombrec'] = 'nombrec';
      $fields['apellidoc'] = 'apellidoc';
      $fields['estado'] = 'estado';
      return $fields;
    }

    public function addHoraColumnQuery($query, $field, $value)
    {
      Doctrine::getTable('Cita')
        ->applyHoraFilter($query, $value);
    }
    
    public function addNombrecColumnQuery($query, $field, $value)
    {
        $rootAlias = $query->getRootAlias();
        $query->innerJoin($rootAlias . '.Usuario uu')
           ->andWhere('uu.nombre = ?', $value);
    }
    
    public function addApellidocColumnQuery($query, $field, $value)
    {
        $rootAlias = $query->getRootAlias();
        $query->innerJoin($rootAlias . '.Usuario u')
           ->andWhere('u.apellido = ?', $value);
    }
    
    public function addEstadoColumnQuery($query, $field, $value)
    {
        Doctrine::getTable('Cita')
          ->applyEstadoFilter($query, $value);
    }    
      
}
